package tools.guava;

import com.alibaba.fastjson.JSON;
import com.google.common.collect.Lists;
import lombok.AllArgsConstructor;
import lombok.Data;

import java.util.List;
import java.util.Objects;
import java.util.function.Consumer;

//https://ifeve.com/google-guava/
// Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库.
// 例如：集合 [collections] 、缓存 [caching] 、原生类型支持 [primitives support] 、
// 并发库 [concurrency libraries] 、通用注解 [common annotations] 、
// 字符串处理 [string processing] 、I/O 等等。
public class GuavaDemo {

    public static void main(String[] args) {
        List<Data> list = Lists.newArrayList();
        list.add(new Data("张三","123"));
        list.add(null);
        list.add(new Data("李四","123"));
        list.add(null);
        List<Data> removeCollections = Lists.newArrayList();

        list.forEach(p->{
            if(p != null && p.getName().equals("李四")){
                System.out.println(JSON.toJSONString(p));
                System.out.println(p);
                p = null;
            }
        });


//        for(Data data : list){
//            if(data.getName().equals("李四"))data=null;
//        }

//        for(int i=0;i<list.size();i++){
//            if (list.get(i).getName().equals("李四")) list.set(i, null);
//        }

        Data data = null;
        list.removeAll(Lists.newArrayList(data));
        list.forEach(p-> System.out.println(JSON.toJSONString(p)));
    }

//    public static void forEach(Consumer<? super T> action) {
//        Objects.requireNonNull(action);
//        for (T t : this) {
//            action.accept(t);
//        }
//    }

    @lombok.Data
    @AllArgsConstructor
    public static class Data{
        private String name;
        private String tel;

    }
}
